
package ihm.controller;

import com.icesoft.faces.component.paneltabset.TabChangeEvent;
import dao.QuestionnaireFacadeLocal;
import entite.Questionnaire;
import entite.QuestionnaireQuestion;
import java.io.Serializable;
import javax.ejb.EJB;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ManagedProperty;
import javax.faces.bean.ViewScoped;
import javax.faces.event.AbortProcessingException;
import metier.GestionFeedBackLocal;


@ManagedBean
@ViewScoped
public class ClientController implements Serializable {

    private String page = "questionnairesOuverts";
    private Questionnaire questionnaire = null;

    @ManagedProperty(value = "#{sessionController}")
    private SessionController sessionController;
   
    @EJB
    private QuestionnaireFacadeLocal questionnaireFacade;

    @EJB
    private GestionFeedBackLocal gestionFeedBack;
   
    /**
     * 
     * @param sessionController
     */
    public void setSessionController(SessionController sessionController) {
        this.sessionController = sessionController;
    }

    /**
     * Getter Page
     * @return String de la page
     */
    public String getPage() {
        return page;
    }

    /**
     * Setter Page
     * @param page à mettre en place
     */
    public void setPage(String page) {
        this.page = page;
    }

    /**
     * Getter du questionnaire
     * @return questionnaire en cours
     */
    public Questionnaire getQuestionnaire() {
        return questionnaire;
    }

    /**
     * Setter du questionnaire
     * @param questionnaire
     */
    public void setQuestionnaire(Questionnaire questionnaire) {
        this.questionnaire = questionnaire;
        this.questionnaire = questionnaireFacade.find(this.questionnaire.getId());

    }

    /**
     * Permet de rafraichir la page
     * @return null
     */
    public String refresh(){
        return null;
    }

    /**
     * Méthode qui permet d'enregistrer les réponses
     * @return null pour recharger la page
     */
    public String enregistrerReponses() {
        for (QuestionnaireQuestion qq : questionnaire.getQuestionnaireQuestionCollection()) {
            gestionFeedBack.enregistrerReponses( sessionController.getUtilisateur(), qq);
        }
        if (questionnaire.getRestituerResultats()) {
            page = "resultatQuestionnaire";
        } else {
            page = "questionnairesOuverts";
        }
        return null;
    }
   
    public void processTabChange(TabChangeEvent tce) throws AbortProcessingException {
       if (tce.getNewTabIndex() == 1){
          ClientController.this.setPage("questionnairesOuverts");
       }
    }

}
